package Q16_26_Calculator;
import java.util.ArrayList;
public class Term {
private double value;
private Operator operator = Operator.BLANK;
public Term(double v, Operator op) {
value = v;
operator = op;
}
public double getNumber() {
return value;
}
public Operator getOperator() {
return operator;
}
public void setNumber(double v) {
value = v;
}
public static ArrayList<Term> parseTermSequence(String sequence) {
ArrayList<Term> terms = new ArrayList<Term>();
int offset = 0;
while (offset < sequence.length()) {
Operator op = Operator.BLANK;
if (offset > 0) {
op = parseOperator(sequence.charAt(offset));
if (op == Operator.BLANK) {
return null;
}
offset++;
}
try {
int value = parseNextNumber(sequence, offset);
offset += Integer.toString(value).length();
Term term = new Term(value, op);
terms.add(term);
} catch (NumberFormatException ex) {
return null;
}
}
return terms;
}
public static Operator parseOperator(char op) {
switch(op) {
case '+': return Operator.ADD;
case '-': return Operator.SUBTRACT;
case '*': return Operator.MULTIPLY;
case '/': return Operator.DIVIDE;
}
return Operator.BLANK;
}
public static int parseNextNumber(String sequence, int offset) {
StringBuilder sb = new StringBuilder();
while (offset < sequence.length() && Character.isDigit(sequence.charAt(offset))) {
sb.append(sequence.charAt(offset));
offset++;
}
return Integer.parseInt(sb.toString());
}
}